<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../general.ent">
  %general-entities;
]>

<sect1 id="ch-system-strippingagain">
  <?dbhtml filename="strippingagain.html"?>

  <title>Повторная очистка от отладочных символов</title>

  <para>Этот раздел является необязательным. Если вы не
  программист и не планируете выполнять отладку установленного программного обеспечения, то общий размер системы можно сократить примерно на 90 МБ, удалив отладочные символы из двоичных файлов и библиотек. Такая операция не вызовет проблем, за исключением того, что не получится выполнить отладку установленного программного обеспечения.</para>

  <para>Большинство пользователей, которые используют приведенные ниже команды, не испытывают никаких трудностей. Тем не менее, легко сделать опечатку и сделать новую систему непригодной для использования, поэтому перед запуском команд рекомендуется создать резервную копию системы LFS в текущем состоянии.</para>

  <para>Сначала расположим отладочные символы для выбранных библиотек в отдельные файлы. Отладочная информация необходима для запуска регрессионных тестов, которые используют <ulink
  url='&blfs-book;/general/valgrind.html'>valgrind</ulink> или <ulink
  url='&blfs-book;/general/gdb.html'>gdb</ulink> позднее в книге BLFS.
  </para>

<!-- also of interest are libgfortan, libgo, libgomp, and libobjc from gcc -->

<!--<screen><userinput>save_lib="ld-2.25.so libc-2.25.so libpthread-2.25.so libthread_db-1.0.so"-->
<screen><userinput>save_lib="ld-&glibc-version;.so libc-&glibc-version;.so libpthread-&glibc-version;.so libthread_db-&libthread_db-version;.so"

cd /lib

for LIB in $save_lib; do
    objcopy --only-keep-debug $LIB $LIB.dbg
    strip --strip-unneeded $LIB
    objcopy --add-gnu-debuglink=$LIB.dbg $LIB
done

save_usrlib="libquadmath.so.&libquadmath-version; libstdc++.so.&libstdcpp-version;
             libitm.so.&libitm-version; libatomic.so.&libatomic-version;" <!-- libcilkrts.so.&libcilkrts-version;-->

cd /usr/lib

for LIB in $save_usrlib; do
    objcopy --only-keep-debug $LIB $LIB.dbg
    strip --strip-unneeded $LIB
    objcopy --add-gnu-debuglink=$LIB.dbg $LIB
done

unset LIB save_lib save_usrlib</userinput></screen>

  <para>Перед выполнением очистки тщательно следите за тем, чтобы
   ни один из исполняемых файлов, который планируется удалить, не был запущен. Если
   вы не уверены, что вы находитесь в правильно настроенной среде chroot как было рассказано ранее,
  <xref linkend="ch-system-chroot" role=","/> сперва выйдем из среды chroot, выполнив команду:</para>

<screen role="nodump"><userinput>logout</userinput></screen>

  <para>Выполним вход в среду chroot заново, выполнив команду:</para>

<screen role="nodump"><userinput>chroot $LFS /tools/bin/env -i          \
    HOME=/root TERM=$TERM              \
    PS1='(lfs chroot) \u:\w\$ '        \
    PATH=/bin:/usr/bin:/sbin:/usr/sbin \
    /tools/bin/bash --login</userinput></screen>

  <para>Теперь двоичные файлы и библиотеки можно безопасно очистить:</para>

<screen><userinput>/tools/bin/find /usr/lib -type f -name \*.a \
   -exec /tools/bin/strip --strip-debug {} ';'

/tools/bin/find /lib /usr/lib -type f \( -name \*.so* -a ! -name \*dbg \) \
   -exec /tools/bin/strip --strip-unneeded {} ';'

/tools/bin/find /{bin,sbin} /usr/{bin,sbin,libexec} -type f \
    -exec /tools/bin/strip --strip-all {} ';'</userinput></screen>

  <para>На экране будет множество сообщений, не удается распознать формат файлов (format not recognized). Такие предупреждения можно игнорировать. Они указывают, что файлы являются сценариями вместо двоичных файлов.</para>

</sect1>
